using BackData;
using Domain.DTOs.ProcessSteps;
using MediatR;
using System.Collections.Generic;

namespace Team.API.Applocation.Command.Makesteps
{
    /// <summary>
    /// 批量保存工艺流程命令
    /// 清除旧的工艺流程，保存新的工艺流程列表
    /// </summary>
    public class SaveMakestepListCommand : IRequest<APIResult<bool>>
    {
        /// <summary>
        /// 产品名称（用于查询和隔离数据）
        /// </summary>
        public string Goodsname { get; set; }

        /// <summary>
        /// 版本号（用于查询和隔离数据）
        /// </summary>
        public string Version { get; set; }

        /// <summary>
        /// 当前操作人（用于记录日志）
        /// </summary>
        public string CurrentUserName { get; set; }

        /// <summary>
        /// 工艺流程列表
        /// </summary>
        public List<SaveMakestepItemDto> ProcessSteps { get; set; }
    }

    /// <summary>
    /// 保存工艺流程项DTO
    /// </summary>
    public class SaveMakestepItemDto
    {
        /// <summary>
        /// 工序ID（如果是新添加的，ID为0）
        /// </summary>
        public long Id { get; set; }

        /// <summary>
        /// 工序名称
        /// </summary>
        public string Processname { get; set; }

        /// <summary>
        /// 工序编号
        /// </summary>
        public string Processcode { get; set; }

        /// <summary>
        /// 工序描述
        /// </summary>
        public string Processdescription { get; set; }

        /// <summary>
        /// 版本号
        /// </summary>
        public string Version { get; set; }

        /// <summary>
        /// 产品名称
        /// </summary>
        public string Goodsname { get; set; }

        /// <summary>
        /// 产出物
        /// </summary>
        public string Deliverables { get; set; }

        /// <summary>
        /// 负责人
        /// </summary>
        public string Kahuna { get; set; }

        /// <summary>
        /// 部门名称
        /// </summary>
        public string Departmentname { get; set; }

        /// <summary>
        /// 是否使用
        /// </summary>
        public bool IsUse { get; set; }

        /// <summary>
        /// 工序时长（分钟）
        /// </summary>
        public short SpanTime { get; set; }

        /// <summary>
        /// 设备ID
        /// </summary>
        public long EquipmentId { get; set; }

        /// <summary>
        /// 父级ID（扁平列表，所有工序的父级ID为0）
        /// </summary>
        public long Parentid { get; set; }

        /// <summary>
        /// 排序顺序
        /// </summary>
        public int SortOrder { get; set; }

        /// <summary>
        /// 备注
        /// </summary>
        public string Remark { get; set; }
    }
}

